package com.example.farmer.Presenter;

import com.example.farmer.Database.ClassPostDatabase;
import com.example.farmer.View.Class.ClassPostView;

public class ClassPostPresenter {
    private ClassPostView view;
    private ClassPostDatabase post_db;

    public ClassPostPresenter(ClassPostView mview) {
        view = mview;
        post_db = new ClassPostDatabase(view.getContext());
    }

    public void posts(String title, String content, String type, String address, String imageUri)
    {
        view.showLoading();
        if (getValidationErrorMessage(title,content,type,address, imageUri)) {
            // 验证成功，执行发布逻辑
            long result = post_db.insertPost(title, content, type,address,imageUri);
            if (result !=-1) {
                view.hideLoading();
//                List<ClassPost> posts = post_db.getPostsByType("/* 相应的类型 */");
                view.showPostSuccess();
            } else {
                view.hideLoading();
                view.showPostError("数据库插入失败，请稍后重试。");
            }
        } else {
            view.hideLoading();
            // 验证失败，显示所有错误信息
            view.showPostError("内容验证失败");
        }
    }


    private boolean getValidationErrorMessage(String title, String content, String type, String address, String imageUri) {
        if (content.length() < 2 || content.length() > 30) {
            view.hideLoading();
            view.showPostError("标题长度必须在2到30个字符之间。\n");
            return false;
        }
        if (title.trim().isEmpty()) {
            view.hideLoading();
            view.showPostError("正文不能为空。\n");
            return false;
        }
        if (imageUri ==null) {
            view.hideLoading();
            view.showPostError("图片不能为空。\n");
            return false;
        }
        if (type.equals("请选择") || type.trim().isEmpty()) {
            view.hideLoading();
            view.showPostError("请选择文章类型。\n");
            return false;
        }
        if (address.trim().isEmpty()) {
            view.hideLoading();
            view.showPostError("地址不能为空。\n");
            return false;
        }

        // 检查内容是否只包含数字、字母、汉字和标点符号
        if (!isValidContent(content,title,address)) {
            // 内容包含无效字符，发布失败并说明理由
            view.hideLoading();
            view.showPostError("内容只能包含数字、字母、汉字和标点符号");
            return false;
        }
        return isValidContent(content,title,address);
    }


    private boolean isValidContent(String title,String content,String address) {
        String regex = "^[\u4e00-\u9fa5a-zA-Z0-9,.!?;，。:：“‘() ]+$";
        return content.matches(regex);
    }

//    private boolean performPublishLogic(String title, String content, String type, String address, String imageUri) {
//        // 假设有一个Post类，用于封装帖子数据
//        ClassPost post = new ClassPost();
//        // 将Post对象保存到数据库
//        post.setTitle(title);
//        post.setContent(content);
//        post.setImagePath(imageUri.toString()); // 将Uri转换为String存储
//        post.setType(type);
//        post.setAddress(address);
//        // 将Post对象保存到数据库
//        boolean isSaved = post_db.insertPost(post);
//
//        if (isSaved) {
//            // 数据保存成功
//        } else {
//            // 数据保存失败，可以在这里处理失败逻辑
//        }
//        return true;
//    }
}